﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Pigmalion.BusinessEntities;
using Pigmalion.Presenter.PedidoPresenter;
using Pigmalion.UIWF.Almacen;

namespace Pigmalion.UIWF
{
    public partial class PedidoMttoView : Form,IPedidoMttoPresenter
    {
        PedidoMttoPresenter presenter;

        public PedidoMttoView()
        {
            InitializeComponent();
            presenter = new PedidoMttoPresenter(this); 

        }

        private void botonBuscarIco1_Click(object sender, EventArgs e)
        {
            ClienteView frmCliente = new ClienteView();
            frmCliente.botonSeleccionar.Visible = true;
            frmCliente.ShowDialog();

            CurrentPedido.Cliente = frmCliente.CurrentClient;

            pedidoBindingSource.ResetBindings(true);
        }

        public Pedido CurrentPedido
        {
            get { return pedidoBindingSource.Current as Pedido;}
            set  { pedidoBindingSource.DataSource = value;}
        }

        private void rucDniTextBox_KeyDown(object sender, KeyEventArgs e)
       {
            if (e.KeyCode == Keys.Enter)
            {
                CurrentPedido.Cliente = presenter.GetCliente(rucDniTextBox.Text);
                pedidoBindingSource.ResetBindings(true);

                if (CurrentPedido.Cliente == null)
                {
                    MessageBox.Show(this, "Cliente no Encontrado", "Mensaje",MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }

            if (e.KeyCode == Keys.F2)
            {
                botonBuscarIco1_Click(sender, e);
            }

            if (e.KeyCode == Keys.Down)
            {
                codigoTextBox.Focus();
            }
        }

        private void PedidoMttoView_Load(object sender, EventArgs e)
        {
            rucDniTextBox.Focus();
            pedidoBindingSource.AddNew();
       
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            Producto producto = productoBindingSource.Current as Producto;

            DetallePedido detalle = 
                new DetallePedido() 
                {
                    Producto = producto,
                    Cantidad = decimal.Parse(txtCantidad.Text),
                    Precio = decimal.Parse(precioTextBox.Text)
                };

            CurrentPedido.AddDetalle(detalle);

            pedidoBindingSource.ResetBindings(true);
            detalleBindingSource.ResetBindings(true);

            productoBindingSource.Clear();
            codigoTextBox.Focus();


            //totalLabel2.Text = string.Format("{0:C}", CurrentPedido.Total);
            totalLabel2.Text = string.Format("{0:n2}", CurrentPedido.Total);
        }

        private void botonBuscarIco2_Click(object sender, EventArgs e)
        {
            ProductoView frmProducto = new ProductoView();
            frmProducto.botonSeleccionar.Visible = true;
            frmProducto.ShowDialog();

            productoBindingSource.DataSource = frmProducto.CurrentProducto;

            txtCantidad.Text = "1";

        }

        private void codigoTextBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                Producto producto = presenter.GetProducto(codigoTextBox.Text);

                if (producto != null)
                {
                    productoBindingSource.DataSource = producto;
                    txtCantidad.Text = "1";
                }
                else
                {
                    MessageBox.Show(this, "Producto no Encontrado", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }

            if (e.KeyCode == Keys.F2)
            {
                botonBuscarIco2_Click(sender, e);
            }

            if (e.KeyCode == Keys.F3)
            {
                btnAgregar_Click(sender, e);
            }
            if (e.KeyCode == Keys.Down)
            {
                txtCantidad.Focus();
            }
        }

        private void txtCantidad_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F3)
            {
                btnAgregar_Click(sender, e);
            }
        }

        private void precioTextBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F3)
            {
                btnAgregar_Click(sender, e);
            }
        }
    }
}
